package day2;
class Out{
    public int a1=1;
    public static int a2=2;
    public void fun1(){
        System.out.println("Out: 普通成员方法");
    }
    public static void fun2(){
        System.out.println("Out: 静态成员方法");
    }

    //在外部类普通成员方法中使用【局部内部类】
    public void test1(){
        System.out.println("外部类普通成员方法：test1()");
        class Inter1{
            public int b1=3;
            //局部内部类不能定义静态成员
            //public static int b2=4;

            //局部内部类普通成员方法
            public void iFun1(){
                System.out.println("普通成员方法：局部内部类可直接访问外部类成员(普通成员):"+a1);
                fun1();
                System.out.println("普通成员方法：局部内部类可直接访问外部类成员(静态成员):"+a2);
                fun2();
            }
            //局部内部类同样也不能定义静态方法
//            public static void iFun12(){
//
//            }
        }
        Inter1 inter1=new Inter1();
        inter1.iFun1();
    }
    //在外部类静态成员方法中使用【局部内部类】
    public static void test2(){
        System.out.println("外部类静态普通成员方法:test2()");
        class Inter2{
            public int b1=5;
            //局部内部类不能定义静态成员
            //public static int b2=6;

            //局部内部类普通成员方法
            public void iFun2(){
                Out out=new Out();
                System.out.println("局部内部类可直接访问外部类成员(普通成员):"+out.a1);
                out.fun1();
                System.out.println("局部内部类可直接访问外部类成员(静态成员):"+a2);
                fun2();
            }
        }
        Inter2 inter2=new Inter2();
        inter2.iFun2();

    }
}

public class PartClass {
    public static void main(String[] args) {
        Out out=new Out();
        out.test1();
        System.out.println("------------");
        out.test2();
    }
}
